home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / DEMOS / 3D_DEMO_4 / !Demo4 / h / GrpLib < prev   
Text File  |  1992-02-06  |  5KB  |  152 lines

  1. /******************************************************************************
  2. *                                                                             *
  3. *    grp.h                                                                    *
  4. *                                                                             *
  5. ******************************************************************************/
  6.  
  7. /*-----------------------------------------------------------------------------
  8.    extern for CallGrp2
  9. -----------------------------------------------------------------------------*/
  10.  
  11. extern void NormTrans(void);
  12. extern void PtsTrans(void);
  13. extern void PtsProj(void);
  14.  
  15. /*-----------------------------------------------------------------------------
  16.    extern Grp2D
  17. -----------------------------------------------------------------------------*/
  18.  
  19. extern void Grp2DInit(void);
  20. extern void Grp2DShutDown(void);
  21. extern void Grp2DChgParm(void);
  22. extern void Grp2DClearView(void);
  23. extern void Grp2DSwapView(void);
  24.  
  25. extern void Uni2DPoly1(void);
  26. extern void Uni2DPoly2(void);
  27. extern void Uni2DPoly3(void);
  28. extern void Uni2DPoly4(void);
  29. extern void Uni2DCircle(void);
  30.  
  31. extern void Grd2DPoly3(void);
  32.  
  33. extern void Spr2DPoly3(void);
  34.  
  35. /*-----------------------------------------------------------------------------
  36.    extern Grp3D
  37. -----------------------------------------------------------------------------*/
  38.  
  39. extern void Grp3DInit(void);
  40. extern void Grp3DShutDown(void);
  41. extern void Grp3DChgParm(void);
  42.  
  43. extern void Uni3DPoly1(void);
  44. extern void Uni3DPoly2(void);
  45. extern void Uni3DPoly3(void);
  46. extern void Uni3DPoly4(void);
  47. extern void Uni3DSphere(void);
  48.  
  49. extern void Grd3DPoly3(void);
  50.  
  51. extern void Spr3DPoly3(void);
  52. extern void Spr3DLoad(void);
  53.  
  54. extern void Convexe3D(void);
  55. extern void Convexe3DLoad(void);
  56.  
  57. extern void Schumkr3D(void);
  58. extern void Schumkr3DLoad(void);
  59.  
  60. extern void (*Obj3DJmpTbl[])();
  61.  
  62. /*-----------------------------------------------------------------------------
  63.    extern Misc
  64. -----------------------------------------------------------------------------*/
  65.  
  66. extern char TblCol[];
  67.  
  68. extern void InitRotMat(void);
  69. extern void TransPtObs(void);
  70. extern void TransNmObs(void);
  71. extern void RotObjRep(void);
  72. extern void RepToRepIn4Rep(void);
  73.  
  74. extern void CallGrp(void *GrpReg, void *GrpStack, void func(void));
  75. extern void Call2Grp(void *GrpReg, void func(void));
  76.  
  77. /*-----------------------------------------------------------------------------
  78.   Matrix routines
  79. -----------------------------------------------------------------------------*/
  80.  
  81. typedef int mat33[3][3];
  82. typedef int vec3[3];
  83. typedef int vec4[4];
  84.  
  85. #define MkVec3(A,x,y,z)   (A)[0]=(x); (A)[1]=(y); (A)[2]=(z)
  86.  
  87. #define MkVec4(A,x,y,z,t) (A)[0]=(x); (A)[1]=(y); (A)[2]=(z); (A)[3]=(t)
  88.  
  89. #define MkRotMat(M,ra,rs,rt) GrpReg[0] = (ra) & 0x7FF; \
  90.                              GrpReg[1] = (rs) & 0x7FF; \
  91.                              GrpReg[2] = (rt) & 0x7FF; \
  92.                              GrpReg[3] = (int)(M);     \
  93.                              CallGrp(GrpReg,GrpStack,InitRotMat)
  94.  
  95. #define Vec3to4(A,B)    (B)[0]=(A)[0];(B)[1]=(A)[1];(B)[2]=(A)[2];\
  96.                         (B)[3]=0
  97.  
  98.  
  99. #define InvMat(A,B) /* A=1/B */  \
  100.              (A)[0][0]=(B)[0][0]; (A)[0][1]=(B)[1][0]; (A)[0][2]=(B)[2][0]; \
  101.              (A)[1][0]=(B)[0][1]; (A)[1][1]=(B)[1][1]; (A)[1][2]=(B)[2][1]; \
  102.              (A)[2][0]=(B)[0][2]; (A)[2][1]=(B)[1][2]; (A)[2][2]=(B)[2][2]
  103.  
  104.  
  105. /*-----------------------------------------------------------------------------
  106.   Grp Level 1 routines prototypes
  107. -----------------------------------------------------------------------------*/
  108.  
  109. extern int  GrpReg[16];
  110. extern int  *GrpStack;
  111. extern int  *GrpGbuf;
  112. extern void Change2DParm(int xorg, int yorg, int xmax, int ymax);
  113. extern void Change3DParm(int pfx, int pfy, int dist);
  114. extern void InitGrp(void);
  115. extern void SwapView(int col);
  116.  
  117. /*-----------------------------------------------------------------------------
  118.   Grp Level 2 routines prototypes
  119. -----------------------------------------------------------------------------*/
  120.  
  121. #define OBS 0
  122. #define SPR 1
  123. #define CVX 2
  124. #define SCH 3
  125.  
  126. typedef struct {
  127.                int   ra,rs,rt;
  128.                mat33 Rep;
  129.                vec3  Org;
  130.                int   Prim[6];
  131. } Object;
  132.  
  133. #define NBMAXDirecSrc 2
  134. #define NBMAXPonctSrc 2
  135. typedef struct {
  136.                int  NbDirecSrc;
  137.                int  NbPonctSrc;
  138.                int  AmbLight;
  139.                vec4 DirecSrc[NBMAXDirecSrc]; 
  140.                vec4 PonctSrc[NBMAXPonctSrc]; 
  141. } Envi;
  142.  
  143. extern Envi *MakeEnvi(int NbDirecSrc, int NbPonctSrc, int AmbLight);
  144. extern char *load(char *Name);
  145. extern void LoadObj(char *Name, int ObjType, int ObjNr);
  146. extern Object *MakeObj(char *Name, int ObjType, int ObjNr);
  147. extern void MoveObj(Object *obj, int ra, int rs, int rt, int v);
  148. extern void PlaceObj(Object *obj, int ra, int rs, int rt, int x, int y, int z);
  149. extern void ReadObjCoord(Object*obj,int*ra,int*rs,int*rt,int*x,int*y,int*z);
  150. extern void PlotObj(Envi *envi, Object *obs, Object *obj);
  151.  
  152.